#ifndef HPLCSPARKLINKPACKETFORMAT_H
#define HPLCSPARKLINKPACKETFORMAT_H

namespace hplc
{
namespace sparklink
{

#include <qglobal.h>

#define SPRAKLINK_PROTOCOL_WAIT_REPLY_TIMEOUT	1000 //一般10ms以内可以收到恢复，最长1s收不到恢复则表示丢包
#define SPARKLINK_PROTOCOL_RETRANSMIT_COUNT 0xFF

// 通信
#define SPARKLINK_PROTOCOL_STX 0x02 // 帧头
#define SPARKLINK_PROTOCOL_ETX 0x03 // 帧尾
#define SPARKLINK_PROTOCOL_ACK 0x06 //
#define SPARKLINK_PROTOCOL_NACK 0x15 //
#define SPARKLINK_PROTOCOL_NACK0 0x16 //
#define SPARKLINK_PROTOCOL_SP 0x20 //

#define SPARKLINK_PROTOCOL_MAX_LEN	16	// 最大帧长度，每包固定16字节，除了回复包为1字节外。

//
#define ERROR_TOO_LONG  1
#define ERROR_SINGULAR  2
#define ERROR_CRC       3

typedef struct
{
    quint8 id; // 最好用16进制表示
    quint8 ai; // 用16进制表示
    quint16 pfc; // 用16进制表示，官方文档用BCD码表示，实际我们使用时可以直接把功能码enum成16进制即可
    quint32 value; // 实际是BCD表示
}SparkLinkProtocol_FrameFormat;

} // sparklink
} // hplc

#endif // HPLCSPARKLINKPACKETFORMAT_H
